import cv2 as cv
import numpy as np
# 仿射变换
src = cv.imread("mao.png")
rows, cols = src.shape[:2]

# 原图中的三个点
pos1 = np.float32([[100, 100], [300, 100], [100, 300]])
# 变换后对应的目标点（可以自由调整这些点的位置以实现不同的变换效果）
pos2 = np.float32([[100, 0], [350, 150], [50, 350]])

# 计算仿射变换矩阵
M = cv.getAffineTransform(pos1, pos2)
# 应用仿射变换
result = cv.warpAffine(src, M, (cols, rows))

# 显示原图和结果图
cv.namedWindow('Original Image', cv.WINDOW_NORMAL)
cv.resizeWindow('Original Image', 500, 500)
cv.imshow('Original Image', src)

cv.namedWindow('Affine Result', cv.WINDOW_NORMAL)
cv.resizeWindow('Affine Result', 500, 500)
cv.imshow('Affine Result', result)

cv.waitKey(0)